package business.batchPosCodeCorp;


import business.ViewLogger;

/**
 * Esta clase se encarga de preparar el filtro para las tablas Corp y PreCodeCorp
 * @author 53385255R
 *
 */
public class SQLFilter {
	
	/**
	 * Se comprueba si tiene que buscar en provincias o sector, etc, si es asi se devuelve vacio porque no habra ninguno
	 * No he contemplado la posibilidad de que se use el OR con estas columnas, por falta de tiempo.
	 * Con lo cual no se obtiene informacion de la tabla Corp aunque se use el OR
	 * @param filter filtro
	 * @return el filtro para la tabla Corp
	 */
	public static String getCorpFilter(String filter) {
		
		//si el filtro contiene las palabras de las columnas no existentes en Corp, lo devolvemos vacio
		if (!filter.matches(".*(provincia|organismo|instit|sector).*"))
			return prepareSQLFilter(filter);
		else {
			ViewLogger.getInstance().info("FILTRADO: Al existir filtrado por provincia, organismo, instit o sector se evita consultar la tabla Corp sin candidatos.");
			return "";
		}
	}
	
	/**
	 * 
	 * Preparamos la consulta 
	 * @param filter
	 * @return filtro
	 */
	public static String prepareSQLFilter(String filter) {

		
		filter = filter.toUpperCase().replaceAll("\\*", "%");
	//	filter = putQuotesInTextWords(filter);
		filter = "AND " + filter;
		
		filter = filter.replaceAll("NOT ", "NOT CORP LIKE ");
		
		filter = filter.replaceAll("AND NOT ", "UND NOT ");
		filter = filter.replaceAll("OR NOT ", "UR NOT ");
		
		filter = filter.replaceAll("AND ", "AND CORP LIKE ");
		filter = filter.replaceAll("OR ", "OR CORP LIKE ");
		
		filter = filter.replaceAll("UND NOT ", "AND NOT ");
		filter = filter.replaceAll("UR NOT ", "OR NOT ");
		
		//corregimos las posibles provincias, sector etc modificadas
		filter = filter.replaceAll("CORP LIKE PROVINCIA ", " PROVINCIA");
		filter = filter.replaceAll("CORP LIKE ORGANISMO ", " ORGANISMO");
		filter = filter.replaceAll("CORP LIKE INSTIT ", " INSTIT");
		filter = filter.replaceAll("CORP LIKE SECTOR ", " SECTOR");
		
		filter = filter.substring(4,filter.length());
		return filter;
		
	}


	

}
